package com.ecut.property_project.model.building;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

public class BuildingHead {
    List<BuildingAssess> assessList;
    List<BuildingPurpose> purposeList;
    /**
    * 楼栋编码
    */
    private String buildingId;

    /**
    * 楼栋名称
    */
    private String buildingName;

    /**
    * 房产证权利人
    */
    private String propertyHolder;

    /**
    * 当前权利人
    */
    private String currentHolder;

    /**
    * ！区域
    */
    private String region;

    /**
    * ！项目信id
    */
    private String projectId;

    /**
    * 固定资产卡号
    */
    private String cardId;

    /**
    * 房产物业详细地址
    */
    private String address;

    /**
    * 总建筑面积
    */
    private BigDecimal totalArea;

    /**
    * 宗地号
    */
    private String landNum;

    /**
    * ！土地用途
    */
    private String purposeName;

    /**
    * 开始使用日期
    */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date startDate;

    /**
    * 截止使用日期
    */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date endDate;

    /**
    * 竣工日期
    */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date completionDate;

    /**
    * 购买或租入日期
    */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date purchaseDate;

    /**
    * ！购置方式(购买/租用)
    */
    private Object purchaseType;

    /**
    * ！委托管理单位（参照部门/物业公司）
    */
    private String manageDept;

    /**
    * 楼层总数
    */
    private Integer floorNum;

    /**
    * 使用面积
    */
    private BigDecimal usedArea;

    /**
    * 宗地面积
    */
    private BigDecimal lotArea;

    /**
    * 产权用途
    */
    private String propertyPurpose;

    /**
    * 房产证编号
    */
    private String propertyId;

    /**
    * 从何处购买或租入
    */
    private String purchaseSource;

    /**
    * 购置金额
    */
    private BigDecimal purchasePrice;

    /**
    * 房屋结构
    */
    private String propertyStructure;

    /**
    * 备注
    */
    private String note;

    public List<BuildingAssess> getAssessList() {
        return assessList;
    }

    public void setAssessList(List<BuildingAssess> assessList) {
        this.assessList = assessList;
    }

    public List<BuildingPurpose> getPurposeList() {
        return purposeList;
    }

    public void setPurposeList(List<BuildingPurpose> purposeList) {
        this.purposeList = purposeList;
    }

    public String getBuildingId() {
        return buildingId;
    }

    public void setBuildingId(String buildingId) {
        this.buildingId = buildingId;
    }

    public String getBuildingName() {
        return buildingName;
    }

    public void setBuildingName(String buildingName) {
        this.buildingName = buildingName;
    }

    public String getPropertyHolder() {
        return propertyHolder;
    }

    public void setPropertyHolder(String propertyHolder) {
        this.propertyHolder = propertyHolder;
    }

    public String getCurrentHolder() {
        return currentHolder;
    }

    public void setCurrentHolder(String currentHolder) {
        this.currentHolder = currentHolder;
    }

    public String getRegion() {
        return region;
    }

    public void setRegion(String region) {
        this.region = region;
    }

    public String getProjectId() {
        return projectId;
    }

    public void setProjectId(String projectId) {
        this.projectId = projectId;
    }

    public String getCardId() {
        return cardId;
    }

    public void setCardId(String cardId) {
        this.cardId = cardId;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public BigDecimal getTotalArea() {
        return totalArea;
    }

    public void setTotalArea(BigDecimal totalArea) {
        this.totalArea = totalArea;
    }

    public String getLandNum() {
        return landNum;
    }

    public void setLandNum(String landNum) {
        this.landNum = landNum;
    }

    public String getPurposeName() {
        return purposeName;
    }

    public void setPurposeName(String purposeName) {
        this.purposeName = purposeName;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public Date getCompletionDate() {
        return completionDate;
    }

    public void setCompletionDate(Date completionDate) {
        this.completionDate = completionDate;
    }

    public Date getPurchaseDate() {
        return purchaseDate;
    }

    public void setPurchaseDate(Date purchaseDate) {
        this.purchaseDate = purchaseDate;
    }

    public Object getPurchaseType() {
        return purchaseType;
    }

    public void setPurchaseType(Object purchaseType) {
        this.purchaseType = purchaseType;
    }

    public String getManageDept() {
        return manageDept;
    }

    public void setManageDept(String manageDept) {
        this.manageDept = manageDept;
    }

    public Integer getFloorNum() {
        return floorNum;
    }

    public void setFloorNum(Integer floorNum) {
        this.floorNum = floorNum;
    }

    public BigDecimal getUsedArea() {
        return usedArea;
    }

    public void setUsedArea(BigDecimal usedArea) {
        this.usedArea = usedArea;
    }

    public BigDecimal getLotArea() {
        return lotArea;
    }

    public void setLotArea(BigDecimal lotArea) {
        this.lotArea = lotArea;
    }

    public String getPropertyPurpose() {
        return propertyPurpose;
    }

    public void setPropertyPurpose(String propertyPurpose) {
        this.propertyPurpose = propertyPurpose;
    }

    public String getPropertyId() {
        return propertyId;
    }

    public void setPropertyId(String propertyId) {
        this.propertyId = propertyId;
    }

    public String getPurchaseSource() {
        return purchaseSource;
    }

    public void setPurchaseSource(String purchaseSource) {
        this.purchaseSource = purchaseSource;
    }

    public BigDecimal getPurchasePrice() {
        return purchasePrice;
    }

    public void setPurchasePrice(BigDecimal purchasePrice) {
        this.purchasePrice = purchasePrice;
    }

    public String getPropertyStructure() {
        return propertyStructure;
    }

    public void setPropertyStructure(String propertyStructure) {
        this.propertyStructure = propertyStructure;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", buildingId=").append(buildingId);
        sb.append(", buildingName=").append(buildingName);
        sb.append(", propertyHolder=").append(propertyHolder);
        sb.append(", currentHolder=").append(currentHolder);
        sb.append(", region=").append(region);
        sb.append(", projectId=").append(projectId);
        sb.append(", cardId=").append(cardId);
        sb.append(", address=").append(address);
        sb.append(", totalArea=").append(totalArea);
        sb.append(", landNum=").append(landNum);
        sb.append(", purposeName=").append(purposeName);
        sb.append(", startDate=").append(startDate);
        sb.append(", endDate=").append(endDate);
        sb.append(", completionDate=").append(completionDate);
        sb.append(", purchaseDate=").append(purchaseDate);
        sb.append(", purchaseType=").append(purchaseType);
        sb.append(", manageDept=").append(manageDept);
        sb.append(", floorNum=").append(floorNum);
        sb.append(", usedArea=").append(usedArea);
        sb.append(", lotArea=").append(lotArea);
        sb.append(", propertyPurpose=").append(propertyPurpose);
        sb.append(", propertyId=").append(propertyId);
        sb.append(", purchaseSource=").append(purchaseSource);
        sb.append(", purchasePrice=").append(purchasePrice);
        sb.append(", propertyStructure=").append(propertyStructure);
        sb.append(", note=").append(note);
        sb.append("]");
        return sb.toString();
    }
}